hard-core predicate